﻿using System;

namespace Utility.Locators
{
	public class ThreadStaticLocator<TService> : ILocator<TService> where TService : class 
	{
		public bool HasCurrent
		{
			get { return _service != null; }
		}
		public TService GetCurrent()
		{
			if (_service == null)
				throw new InvalidOperationException("Нельзя обращаться к локатору до инициализации его объектом службы.");

			return _service;
		}
		public void SetCurrent(TService instance)
		{
			_service = instance;
		}

		[ThreadStatic]
		private static TService _service;
	}
}